package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.EvidenceFileInfoPO;
import com.itlong.cloud.POJO.VO.operate.DeviceAuthFileVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      设备白名单授权文件管理数据访问层接口
 * </desc>
 *
 * @createDate 2020/8/13
 **/
@Mapper
@Repository
public interface IOperateDeviceWhiteListAuthFileDao {

    /**
     * <desc>
     *      获取授权文件列表
     * </desc>
     *
     * @param params 查询参数map
     * @return 授权文件信息列表
     * @Author Zhu.yj
     * @createDate  2020/8/14
     */
    List<DeviceAuthFileVO> getPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取授权文件列表数量
     * </desc>
     *
     * @param params 查询参数map
     * @return 列表数量
     * @Author Zhu.yj
     * @createDate  2020/8/14
     */
    Integer getPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      保存操作
     * </desc>
     *
     * @param params 参数map
     * @return 受影响行数
     * @Author Zhu.yj
     * @createDate  2020/8/14
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      删除授权文件
     * </desc>
     *
     * @param authId 授权文件id
     * @return 受影响行数
     * @Author Zhu.yj
     * @createDate  2020/8/14
     */
    Integer delete(@Param("authId") String authId);


    /**
    *<desc>
    * 获取授权文件信息
    *</desc>
    *
    * @Author  chengshican
    * @Date   2020-08-15 10:44
    * @Param arams 查询参数map
    * @Return 授权文件信息
    * @Exception
    *
    */

    DeviceAuthFileVO getEffectiveAuthFile(Map<String, Object> params);
    
    
    /**
    *<desc>
    * 根据授权文件id更新可用次数和已使用次数
    *</desc>
    *
    * @Author  chengshican
    * @Date   2020-08-16 9:03
    * @Param  authId授权文件id  effectiveTimes 可用次数  usedTimes 已使用次数
    * @Return      
    * @Exception   
    * 
    */
    int updateAuthFileByAuthId(@Param("authId") String authId, @Param("effectiveTimes") String effectiveTimes,@Param("usedTimes") String usedTimes);

    /**
     * <desc>
     *      获取次数凭证地址url
     * </desc>
     *
     * @param authId 授权文件id
     * @return 包含key为 fileName, fileUrl的map的集合
     * @Author Zhu.yj
     * @createDate  2020/8/16
     */
    List<Map<String, Object>> getTimesEvidence(@Param("authId") String authId);

    /**
     * <desc>
     *      根据文件名称获取文件数量
     * </desc>
     *
     * @param fileName 文件名称
     * @return 文件名为fileName的数量
     * @Author Zhu.yj
     * @createDate  2020/8/17
     */
    Integer getCountByFileName(@Param("fileName") String fileName);


    /**
     * <desc>
     *      批量保存次数凭证文件信息
     * </desc>
     *
     * @param list 列表
     * @return 受影响行数
     * @Author Zhu.yj
     * @createDate  2020/8/18
     */
    Integer batchSaveEvidenceFile(@Param("list") List<EvidenceFileInfoPO> list);

    /**
     * <desc>
     *      删除次数凭证文件
     * </desc>
     *
     * @param authId 授权文件id
     * @return 受影响行数
     * @Author Zhu.yj
     * @createDate  2020/8/18
     */
    Integer deleteEvidenceFile(@Param("authId") String authId);
}
